Methods and apparatus to predict end of streaming media using a prediction model

ABSTRACT

Methods to predict end of streaming media using a prediction model are disclosed herein. An example apparatus includes at least one memory, instructions in the apparatus, and processor circuitry to execute the instructions to generate a prediction model using a mean value of a bandwidth of a transmission of a streaming media to a user device and an amplitude of the streaming media, and identify an end of a streaming media session when an output of the prediction model satisfies a threshold.

RELATED APPLICATIONS

This patent arises from a continuation of U.S. patent application Ser.No. 17/726,348, filed on Apr. 21, 2022, now U.S. Pat. No. 11,563,664,which is a continuation of U.S. patent application Ser. No. 17/189,145,filed on Mar. 1, 2021, now U.S. Pat. No. 11,316,769, which is acontinuation of U.S. patent application Ser. No. 16/773,785, filed onJan. 27, 2020, now U.S. Pat. No. 10,938,704, which is a continuation ofU.S. patent application Ser. No. 16/236,318, filed on Dec. 28, 2018, nowU.S. Pat. No. 10,547,534, which is a continuation of U.S. patentapplication Ser. No. 15/954,552, filed on Apr. 16, 2018, now U.S. Pat.No. 10,193,785, which is a continuation of U.S. patent application Ser.No. 14/473,602, filed on Aug. 29, 2014, now U.S. Pat. No. 9,948,539.U.S. patent application Ser. No. 17/726,348, U.S. patent applicationSer. No. 17/189,145, U.S. patent application Ser. No. 16/773,785, U.S.patent application Ser. No. 16/236,318, U.S. patent application Ser. No.15/954,552, and U.S. patent application Ser. No. 14/473,602 are herebyincorporated herein by reference in their entireties.

FIELD OF THE DISCLOSURE

This disclosure relates generally to monitoring streaming media, and,more particularly, to methods and apparatus to predict the end ofstreaming media using a prediction model.

BACKGROUND

Streaming media, as used herein, refers to media that is presented to auser by a presentation device at least partially in parallel with themedia being transmitted (e.g., via a network) to the presentation device(or a device associated with the presentation device) from a mediaprovider. Often times, streaming media is used to present live events.However, streaming media may also be used for non-live events (e.g., atime-shifted media presentation and/or video on demand presentation).Typically, time-adjacent portions of a streaming media file aredelivered to and stored in a buffer, or temporary memory cache, of astreaming media device while the streaming media is presented to theuser. The buffer releases the stored streaming media for presentationwhile continuing to fill with un-played portions of the streaming media.This process continues until the user terminates presentation of thestreaming media and/or the complete streaming media file has beendelivered (e.g., downloaded). In situations where the complete streamingmedia file has been delivered, the streaming media device typicallycontinues releasing the buffered streaming media for presentation untilthe buffer is emptied.

A buffer is utilized to compensate for issues such as bandwidth usagefluctuations, which create “lag,” or discontinuous delivery of themedia. The buffer mitigates the occurrences of “lag” by holding aportion of the streaming media that can be presented while awaiting thetransfer of additional streaming media. In some instances, as the bufferfills, the download speed (e.g., bandwidth usage rate) of the streamingmedia may speed up or slow down according to the remaining space of thebuffer.

In recent years, streaming media has become a popular medium for thedelivery of media to users. Services like Netflix™ and Amazon InstantVideo™, as well as on-demand services provided by internet protocol (IP)based television services (e.g., AT&T Uverse™) are examples of providersof such streaming media. The instant nature of streaming media and theincrease in bandwidth capabilities of internet service providers havecontributed to the popularity of streaming media because of the highresolutions capable of being streamed (which require increased bandwidthfor delivery). For example, when a user of a streaming media deviceselects a movie from a streaming media distributor, such as Netflix™,the movie the presented almost instantly without having to wait for theentire move file to be downloaded to the user's device.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example system for streaming media touser devices.

FIG. 2 is an illustration of an example streaming media application.

FIG. 3 is a block diagram of an example implementation of the predictorof FIG. 1 to predict the end of streaming media.

FIG. 4 is an example graph illustrating observed bandwidth rates of astreaming media application in the process of streaming media.

FIG. 5A is an example graph of (a) the observed bandwidth rates of FIG.4 and (b) an example prediction model.

FIG. 5B is an example graph of (a) observed bandwidth rates of astreaming media application in the process of streaming media and (b)prediction models associated with the observed bandwidth rates.

FIG. 6 is a flow diagram representative of example machine readableinstructions that may be executed to implement the example predictor ofFIG. 3 to predict the end of streaming media.

FIG. 7 is a flow diagram representative of example machine readableinstructions that may be executed to implement the example predictor ofFIG. 3 to generate parameters for prediction model generation.

FIG. 8 is a flow diagram representative of example machine readableinstructions that may be executed to implement the example predictor ofFIG. 3 to generate a prediction model and forecast the predicted endtime of streaming media.

FIG. 9 is a block diagram of an example processor system that mayexecute any of the machine readable instructions represented by FIGS. 6,7 , and/or 8 to implement the example predictor of FIGS. 1 and/or 3 .

DETAILED DESCRIPTION

While a media device is streaming media from a streaming mediadistributor, data may be obtained from communications between thestreaming media device and the streaming media distributor. Such datamay be obtained by analyzing traffic patterns, analyzing communicationpackets, network tapping, etc. Example data (or metadata) about thestreaming media and/or the streaming environment includes a media fileformat, an available buffer space of the streaming media device,bandwidth usage of the streaming media device, etc. This descriptivedata may be used to compliment traditional data obtained by AMEs (e.g.,audience composition and/or media identification associated withtraditional media (e.g., radio and/or television) broadcasts) to createmore robust data sets, and allows for finer grained statistical methodsto be applied.

Predicting the end of the streaming media is important in instanceswhere access to the streaming media distributor and/or the streamingmedia application is not available for directly obtaining informationabout the end. For example, predicting an end of streaming media timemay allow for more precise streaming advertisement extraction for mediacrediting. In some instances, predicting the end of streaming media mayallow for targeted survey delivery. That is, it allows a survey to bedelivered near the end (e.g., slightly before the end) of the streamingmedia before a user diverts attention away from a media presentationdevice when the media presentation has ended.

In some instances, in media monitoring, time durations for streamingmedia presentation are elongated or shortened from a time duration ofthe streaming media. For example, by rewinding, skipping, orfast-forwarding (e.g., track mode operations) through streaming media(e.g., via progress bar manipulation), the duration of the presentationmay be substantially longer or shorter than the duration of thestreaming media (e.g., were it applied without any track modeoperations). By extrapolating or inferring an end of streaming media(and updating the analysis during presentations), finer detailed and/ormore accurate time durations may be obtained. Additionally oralternatively, targeted media may be provided to a user streaming media.Instead of waiting for a signal that streaming media is ended at a userdevice, it may be beneficial to predict when streaming media will end.By predicting the end time, a more seamless transition to targeted mediamay occur.

Examples disclosed herein predict the end of a streaming mediapresentation using a prediction model based on characteristics of thebandwidth during periods of buffer fill associated with the streaming ofmedia. Examples disclosed herein use the characteristics of thebandwidth to extract parameters for use in a prediction model. Theexample prediction model is used to forecast a time at which the end ofthe streaming media file will be reached.

Examples disclosed herein are applicable to any streaming media protocol(e.g. Dynamic Adaptive Streaming over HTTP (DASH), Adaptive Bit-RateStreaming, HTTP Live Streaming (HLS), Real-Time Streaming Protocol(RTSP), Real-Time Protocol (RTP), Real-Time Control Protocol (RTCP),and/or any suitable combination or future protocol).

FIG. 1 is a block diagram of an example environment in which examplemethods apparatus and/or articles of manufacture disclosed herein may beused for predicting end times of streaming media. In the exampleenvironment of FIG. 1 , media streamed from a streaming mediadistributor 120 to example user devices 101 a-101 c. The exampleenvironment includes the example user devices 101 a-101 c, an exampleproxy server 105, an example network 115, and the example streamingmedia distributor 120. In the example of FIG. 1 , an audiencemeasurement entity 125, such as The Nielsen Company (US), LLC, includesan example predictor 130 for predicting the end of streaming media.

In the illustrated example, one of the example user devices 101 a-101 c,initiates a streaming media application to stream media (e.g., exampleuser device 101 a). A request to stream media is transmitted to theexample streaming media distributor 120 by the example user device 101a. The request is routed through the example proxy server 105 and theexample network 115. The example streaming media distributor 120acknowledges the request, and begins streaming media to the example userdevice 101 a through the example proxy server 105 using an encryptedstream. The encrypted stream prevents a proxy server 105 from accessinginformation regarding track mode operations and/or timestamp informationassociated with the streaming media. While the media is streaming to theexample user device 101 a, the example proxy server 105 extractsavailable data and/or metadata associated with the streaming media,(e.g., bandwidth rates, source and destination ports, internet protocoladdresses, etc.) and transmits the extracted data and/or metadata to apredictor 130 at the example audience measurement entity 125. Theexample predictor 130 uses the transmitted data (e.g., bandwidth rates)to predict when the media will stop (or already did stop) presenting onthe user device 101 a. For example, the predictor 130 predicts the endtime when such time is not directly accessible to the example proxyserver 105, the audience measurement entity 125, nor the examplepredictor 130 during the streaming of the media.

The example user devices 101 a-101 c of the illustrated example may beimplemented by any device that supports streaming applications and/orstreaming media (e.g. smart televisions, tablets, game consoles, mobilephones, smart phones, streaming media devices, computers, laptops,tablets, Digital Versatile Disk (DVD) players, Roku™ devices, Internettelevision apparati (e.g., Google™ Chromecast™, Google™ TV, Apple™ TV,etc.) and/or other electronic devices). The example user devices 101a-101 c communicate with the example streaming media distributor 120 viathe proxy server 105 using the network 115.

The example network 115 may be any type of communications network,(e.g., the Internet, a local area network, a wide area network, acellular data network, etc.) facilitated by a wired and/or wirelessconnection (e.g., a cable/DSL/satellite modem, a cell tower, etc.). Theexample network may be a local area network, a wide area network, or anycombination of networks.

The example proxy server 105 of the illustrated example is a networkdevice located in a monitored household that acts as an intermediary forcommunications (e.g., streaming media requests and responses includingstreaming media) involving one or more of the example user devices 101a-101 c and/or one or more other components connected to the examplenetwork 115. Alternatively, the example proxy server 105 may be locatedin a separate location from the monitored household. For example, theexample proxy server 105 may be a router, a gateway, a server, and/orany device capable of acting as a network traffic intermediary. Forexample, a broadband modem and/or router may implement the proxy server105. According to the illustrated example, the proxy server 105 is anintermediary for communications between the example user devices 101a-101 c and the example streaming media distributor 120.

For example, when the example user device 101 a sends a request formedia to the streaming media distributor 120, the request is firstrouted to the example proxy server 105. The example proxy server 105then transmits the request to the example streaming media distributor120 (e.g., the request may be transmitted after being modified toindicate that a response to the request should be routed to the proxyserver 105). When the example streaming media distributor 120 respondsto the request, the response is routed to the example proxy server 105,which re-transmits the request to the example user device 101 a.

As the example proxy server 105 is involved in communications associatedwith the example user devices 101 a-101 c, the example proxy server 105is capable of gathering information about those communications. Whilethe example proxy server 105 is referred to as a “proxy” device, theproxy server 105 may not perform functions typically associated with aproxy (e.g., performing packet translation). Rather, the functions ofthe proxy server 105 described in examples herein, may be performed byany type of device to collect information about communications betweenthe example user devices 101 a-101 c and the example streaming mediaprovider 120 (e.g., the example proxy server 105 may not participate inthe communication chain and, instead, may monitor the communicationsfrom the sidelines using, for example, packet mirroring, packetsnooping, or any other technique).

In the illustrated example, the proxy server 105 transmits collectedinformation to the audience measurement entity 125. The example proxyserver 105 collects, calculates, and/or correlates bandwidth informationfor a streaming media application. In some examples, the example proxyserver 105 identifies and collects data originating from the streamingmedia distributor 120 and delivered to the user devices 101 a-101 c. Forexample, the example proxy server 105 may collect and correlate trafficbased on one or more characteristics such as simple network managementprotocol (SNMP), internet protocol (IP) addresses, sub-protocols of theInternet Protocol suite (e.g., real-time streaming protocol (RTSP)),port information, service designation, user agent, etc. One or more ofthe above characteristics may be indicative of a specific streamingmedia distributor 120 (e.g., a source IP address). The example proxyserver 105 also determines the rate (e.g., bandwidth rate) at which thedata passes through the proxy server 105 and/or the rate at which datais streamed from the streaming media distributor 120 to the user devices101 a-101 c. Combining the correlated traffic and the rate (e.g., datarate, bandwidth rate, etc.) at which the traffic passes through thedevice allows for application specific bandwidth rate monitoring. Theproxy server 105 collects and transmits the bandwidth rate of thestreaming media application and the application identification to theexample predictor 130. In this way, data (e.g., bandwidth rate) is notrequired to be sent from a media device presenting the streaming medianor from a streaming media distributor transmitting the streaming mediato the media device. Additionally or alternatively, the example proxyserver 105 mirrors the traffic to the example predictor 130 forcollection, calculation, and/or correlation.

Other network topologies than those illustrated in FIG. 1 may beutilized with example methods and apparatus disclosed herein. Forexample, the proxy server 105 may not be included in the system 100 whenother devices or components can provide information about communications(e.g., bandwidth rates may be reported by the user devices 101 a-101 c).Additionally or alternatively, communications may be routed through theexample audience measurement entity 125 and/or mirrored to the exampleaudience measurement entity 125. In some such examples, the audiencemeasurement entity 125 monitors and gathers information about thecommunications with or without information from other devices such asthe proxy server 105.

The audience measurement entity 125 of the illustrated example includesan example predictor 130. In this example, the example predictor 130obtains the bandwidth rate from the proxy server 105 while the exampleuser devices 101 a-101 c stream media from the example streaming mediadistributor 120. However, as explained above, the data rate (e.g.,bandwidth rate) can alternatively be provided by other device(s). Insome examples control information, text overlay, etc. are embeddedwithin the stream. Thus, it is desirable to create a threshold bandwidthrate to distinguish the transmission of streaming media fromtransmission of other data carried in the stream. An example selectionof such a threshold is described in conjunction with FIG. 3 . In theillustrated example of FIG. 1 , the example predictor 130 analyzes thebandwidth rate forwarded by the example proxy server 105 and determinesend of stream times for the streaming media when the bandwidth exceedsthe threshold.

In the illustrated example, one or more of the user devices 101 a-101 care associated with a panelist who has agreed to be monitored by theaudience measurement entity 125. The panelists are users registered onpanels maintained by a ratings entity (e.g., an audience measuremententity 125) that owns and/or operates the ratings entity subsystem.Traditionally, audience measurement entities (also referred to herein as“ratings entities”) determine demographic reach for advertising andmedia programming based on registered panel members. That is, anaudience measurement entity 125 enrolls people that consent to beingmonitored into a panel. During enrollment, the audience measuremententity receives demographic information from the enrolling people sothat subsequent correlations may be made between advertisement/mediaexposure to those panelists and different demographic markets.

People become panelists via, for example, a user interface presented onthe user devices 101 a-101 c (e.g., via a website). People becomepanelists in additional or alternative manners such as, for example, viaa telephone interview, by completing an online survey, etc. Additionallyor alternatively, people may be contacted and/or enlisted using anydesired methodology (e.g., random selection, statistical selection,phone solicitations, Internet advertisements, surveys, advertisements inshopping malls, product packaging, etc.).

In the panelist system of the illustrated example, consent is obtainedfrom the user to monitor and analyze network data when the user joinsand/or registers for the panel. For example, the panelist may agree tohaving their network traffic monitored by the proxy server 105. Althoughthe example system of FIG. 1 is a panelist-based system, non-panelistand/or hybrid panelist systems may alternatively be employed.

FIG. 2 illustrates an example streaming media application 201, executingon one of the example user devices 101 a-101 c. The example streamingmedia application 201 of this example presents media obtained from thestreaming media distributor 120 on the corresponding example device 101a-101 c. The graphical user interface of the streaming media application201 presents data relevant to the presentation of the streaming media.In the example streaming media application 201 of FIG. 2 , an elapsedtime indicator 202 displays a length of the media presentation sessionand a total length of the media. A file ID indicator 203 shows the filename of the streaming media being presented.

In some examples, the file ID indicator 203 is analyzed by the examplepredictor 130 to determine a file format when available (e.g., if thestreaming media is transmitted in an unencrypted stream). The examplepredictor 130 may access the contents of unencrypted streaming mediapackets (or encrypted packets for which a decryption process isavailable). The example data packets may include headers, or leadingdata, which indicates what video and/or audio is being streamed to thestreaming media application 201. An example bandwidth indication field204 displays the current bandwidth usage rate of the streaming mediaapplication 201. An example time remaining indicator 206 displays thepredicted end of media time as indicated by the user device (e.g., 101a). An example progress bar 208, displays the graphical representationof the time remaining based on the values of the example elapsed timeindicator 202 and example time remaining indicator 206.

In some examples, the data displayed by at the streaming mediaapplication 201 (e.g., codec type, file name, and/or time elapsed) maybe inaccessible to the example predictor 130. However, the examplepredictor 130 may measure the value of the bandwidth rate by monitoringthe traffic between the user device 101 a-101 c and the streaming mediadistributor 120.

FIG. 3 is a block diagram of an example implementation of the examplepredictor 130 of FIG. 1 . The example predictor 130 of FIG. 3 isprovided with an example bandwidth recorder 304, an example identifier306, an example threshold generator 308, an example parameter generator310, an example modeler 312, an example forecaster 314, and an exampleend of stream handler 316.

The example bandwidth recorder 304 of FIG. 3 observes and records thebandwidth rates forwarded by the example proxy server 105 of FIG. 1 . Inthe example FIG. 3 , the bandwidth recorder 304 is in communication withan example identifier 306 and an example threshold generator 308. Thebandwidth rates forwarded by the example proxy server 105 are thebandwidth rates associated with the streaming media application 201while the streaming media application 201 is streaming media.

The example identifier 306 determines the format of media being streamedin the streaming media application 201. In the illustrated example ofFIG. 3 , when the streaming media application 201 begins to streammedia, the example identifier 306 analyzes data delivered to the examplebandwidth recorder 304 by the proxy server 105 to determine the audioand/or video codec of the streaming media. In some examples, the exampleidentifier 306 knows the file format of the media used by the streamingmedia application 201 prior to streaming because such file formats maybe proprietary (e.g., the example identifier 306 is informed of the fileformat by the example proxy server 105). The media format determined bythe example identifier 306 is sent to the example bandwidth recorder304. In some examples where a media format is not determined by theexample identifier 306, the example bandwidth recorder 304 is notifiedthat the media format is undetermined.

The example threshold generator 308 in the illustrated example obtainsthe media format of streaming media from the example identifier 306.When the media format is obtained, the example threshold generator 308references a look-up-table to determine a threshold for the bandwidthrate which signifies (1) that bandwidth rates should begin (e.g., whenbandwidth exceeds the threshold) or cease (e.g., when bandwidth is belowthe threshold) to be stored in a metering dataset and (2) that aprediction should be made regarding end of stream time. For example,when bandwidth rates are above the set threshold, the bandwidth ratesare recorded to a metering dataset and the predictor 130 is primed togenerate a prediction. When the bandwidth rates are below the threshold,the bandwidth rates are not recorded to a metering dataset and thepredictor 130 should be generating a prediction with respect to acompleted metering dataset.

In examples where a media format is not determined by the exampleidentifier 306, the threshold may be set to a default, or predetermined,value by the example threshold generator 308. In some examples, thethreshold generator 308 determines that the format of the streamingmedia contains only streaming media and does not contain any otherinformation such as text overlays and/or track mode commands. In such anexample, a threshold may not be set for recording the bandwidth rate(e.g., a threshold may be determined to be unnecessary or may beotherwise excluded because it is not necessary to differentiate betweenthe streaming media and other information carried in the stream). Thethreshold generator 308 of the illustrated example transmits thethreshold to the example bandwidth recorder 304.

In the illustrated example of FIG. 3 , the example bandwidth recorder304 monitors and/or records the bandwidth rate forwarded by the exampleproxy server 105 and compares the bandwidth rate to the thresholddetermined by the example threshold generator 308. When the examplebandwidth recorder 304 determines that the bandwidth rate meets orexceeds the threshold, the example bandwidth recorder 304 begins tostore the bandwidth rates and their associated time-stamps in a meteringdataset. The metering dataset is used to store the values of bandwidthrates from a first time that the bandwidth rates meet or exceed thethreshold until a second time that the bandwidth rates meet or fallbelow the threshold after the first time. When complete, the meteringdataset values are used for generating the parameters used in generatinga prediction model (e.g., prediction model parameters). The examplebandwidth recorder 304 monitors the bandwidth rate to determine when thebandwidth rate falls below the threshold set by the example thresholdgenerator 308. When the bandwidth rate falls below the set thresholdafter having previously met or exceeded the threshold, the examplemodeler 312 is notified that the metering dataset (e.g., the bandwidthrates recorded between the time that the bandwidth rate met or exceededthe threshold and the later time that the bandwidth rate met or droppedbelow the threshold) is ready for processing by the example parametergenerator 310. The example bandwidth recorder 304 continues to monitorthe bandwidth rates forwarded by the proxy server after the completionof the dataset.

The example parameter generator 310 of the illustrated examplecalculates and/or identifies a prediction model to generate a streamingduration prediction model. Each time a prediction model is generated,the example parameter generator 310 generates a new set of parameters inthe event that a characteristic of the streaming media has changed. Forexample, the bit rate of the streaming media may change during streamingif the streaming media is streaming using adaptive bit-rate streaming.The example parameter generator 310 accesses the metering dataset andbegins a series of calculations to determine characteristic parametersof the metering dataset. In the illustrated example, the parametergenerator 310 calculates the mean and the standard deviation of themetering dataset. The example parameter generator 310 also identifies adecay factor for the prediction model. The decay factor represents therate at which the prediction model decays or decreases from a peak valueof the prediction model to a zero value (or negative infinity based onthe prediction model utilized). In some examples, the decay factor maybe identified based on the type of streaming media (e.g., audio and/orvideo). In other examples, the decay factor may be identified from thecodec of the media being streamed. In some examples, the decay factormay be identified based on the bit rate of the streaming media. In yetother examples, the decay factor may be uniform for all media typesand/or codecs. The example parameter generator 310 stores the predictionmodel parameters and the decay factor associated with the predictionmodel parameters. When the example parameter generator 310 generatesparameters for the dataset, it notifies the example modeler 312.

The example modeler 312 of FIG. 3 generates a prediction model based onthe prediction model parameters created by the example parametergenerator 310. When the example modeler 312 receives notification fromthe example parameter generator 310 that the prediction model is to begenerated, the example modeler 312 retrieves the prediction modelparameters and the decay factor associated with the streaming media. Theexample modeler 312 generates the prediction model using the parametersprovided by the example parameter generator 310. In some examples,before releasing the prediction model to the example forecaster 314, theprediction model parameters may be adjusted. For example, the adjustmentby the example modeler 312 may align the scale (e.g., amplitude) and themean (e.g., temporal location) of the prediction model to the scale andthe mean of the metering dataset used to generate the prediction model.When the scale and mean of the example prediction model match the scaleand mean of the primary dataset, the prediction model is forwarded tothe example bandwidth recorder 304 and the example forecaster 314.

The example bandwidth recorder 304 uses the prediction model whilecontinuing to monitor the bandwidth rate sent by the example proxyserver 105. When a prediction model has been generated, the examplebandwidth recorder 304 continues creating metering datasets as describedabove and also compares the observed bandwidth rate against theprediction model. If the value of the bandwidth rate exceeds theprediction model (e.g., the amplitude of the bandwidth rate exceeds theamplitude of the prediction model), the example bandwidth recorder 304will signal the example parameter generator 310 that new parametersshould be generated for a new metering dataset to generate an updatedprediction model.

The example forecaster 314 of FIG. 3 obtains the prediction model andbegins iterating, using temporal increments (e.g. tenths, hundredths,thousandths of a second), over the prediction model starting from themean value (the mean value being the temporal location of the maximumvalue of the metering dataset). The prediction model is a function oftime (as will be explained in more detail below in conjunction with FIG.6 ). Therefore, using time values, the example forecaster 314 calculatesa value for every unit of time after the temporal location of the mean.The example forecaster 314 continues iterating over increasing timevalues until the prediction model produces (or is indicative of) a valueat or below the threshold generated by the example threshold generator308. The value that is at or below the threshold signifies the time atwhich the example forecaster 314 predicts that the streaming media willend, or more specifically, when the buffer on the user device will beemptied complete the presentation of the streaming media after thetransfer of the streaming media via the network 115. When the value ator below the threshold is reached, the example forecaster 314 determinesthat the time at which the value at or below the threshold wasidentified is the predicted end of stream time and forwards the end ofstream time to the example end of stream handler 316. In some examples,when no threshold is utilized, the iteration performed by the exampleforecaster 314 may stop when a value of zero (or the first negativevalue) is reached.

The example end of stream handler 316 stores and/or transmits theforecasted end of stream time to a data collection facility at or remotefrom, the audience measurement entity 125. In some examples, the end ofstream handler 316 may perform other actions in response to the end ofstream time. For example, at the time indicated as the end of streamtime, the end of stream handler 316 may transmit a survey to the userdevice(s) 101 a-101 c streaming the media. In other examples, thepredicted end of stream time may be used to send a command to extractadvertisement(s) embedded in the streaming media.

While an example manner of implementing the predictor 130 of FIG. 1 isillustrated in FIG. 3 , one or more of the elements, processes and/ordevices illustrated in FIG. 3 may be combined, divided, re-arranged,omitted, eliminated and/or implemented in any other way. Further, theexample bandwidth recorder 304, the example identifier 306, the examplethreshold generator 308, the example parameter generator 310, theexample modeler 312, the example forecaster 314, and the example end ofstream handler 316 and/or, more generally, the example predictor 130 ofFIG. 1 may be implemented by hardware, software, firmware and/or anycombination of hardware, software and/or firmware. Thus, for example,any of the example bandwidth recorder 304, the example identifier 306,the example threshold generator 308, the example parameter generator310, the example modeler 312, the example forecaster 314, and theexample end of stream handler 316 and/or, more generally, the examplepredictor 130 could be implemented by one or more circuit(s),programmable processor(s), application specific integrated circuit(s)(ASIC(s)), programmable logic device(s) (PLD(s)) and/or fieldprogrammable logic device(s) (FPLD(s)), etc. When reading any of theapparatus or system claims of this patent to cover a purely softwareand/or firmware implementation, at least one of the example bandwidthrecorder 304, the example identifier 306, the example thresholdgenerator 308, the example parameter generator 310, the example modeler312, the example forecaster 314, and the example end of stream handler316 and/or the example predictor 130 are hereby expressly defined toinclude a tangible computer readable storage device or storage disc suchas a memory, DVD, CD, Blu-ray, etc. storing the software and/orfirmware. Further still, the example predictor 130 of FIG. 1 may includeone or more elements, processes and/or devices in addition to, orinstead of, those illustrated in FIG. 3 , and/or may include more thanone of any or all of the illustrated elements, processes and devices.

FIG. 4 illustrates a graphical illustration 400 of example bandwidthrates forwarded from the example proxy server 105 of FIG. 1 forstreaming of example media to an example one of the user devices 101a-101 c. The example bandwidth rates represent the rates of the trafficbetween the example streaming media distributor 120 and one of theexample user devices 101 a-101 c as seen at the proxy server 105. In theillustrated example of FIG. 4 , one cycle of buffer filling duringstreaming of media is represented by bandwidth rate curve 402. Forexample, a cycle of buffer filling is a period of time where a bufferfills with downloaded media at increasing, and then decreasing rates, tobe presented uninterrupted. In some examples regarding adaptive bit-ratestreaming, a streaming media file is partitioned into smaller packetsfor downloading. The downloading of the smaller packets into the buffercreates spikes in bandwidth much the same as when a buffer fill andempty cycling may create such spikes.

The example bandwidth rate curve 402 is observed to increase as thebuffer of the user device 101 a-101 c is filled (or a portion of themedia is downloaded) and decreases when the buffer reaches capacity (orthe portion of the media has been transferred). At a certain capacity ofthe buffer or after a certain percentage of a packet is downloaded, 50%for example, the user device 101 a-101 c tapers the bandwidth rate, orspeed at which data is downloaded. The tapering occurs so that thedownloaded data is not lost due to lack of buffer space. This behavioris represented in the shape of the bandwidth rate curve 402. As thebuffer begins filling, the bandwidth rate gradually increases to a peakand then begins to taper off as the certain capacity is reached. Thistapering continues until the entire media file is downloaded (assuminguninterrupted streaming).

In the illustrated example, the bandwidth recorder 304 monitors thebandwidth forwarded by the example proxy server 105. The exampleidentifier 306 determines that the streaming media is of, for example, aflash video format and informs the example threshold generator 308 ofthe media format. The example threshold generator 308 sets the threshold404 and informs the example bandwidth recorder 304 of the threshold.When the bandwidth rate is observed to be at the threshold 404 at time405, the example bandwidth recorder 304 begins storing the bandwidthrates in a metered dataset. When the bandwidth rate is observed to be atthe threshold 404 at time 408, after previously exceeding the thresholdat time 405, then the bandwidth recorder 304 stops appending values tothe metering dataset. Thus, the values of the bandwidth curve betweentime 405 and time 408 comprise the metering dataset 402 (also referredto herein as the bandwidth rate curve 402). Though, the examplepredictor 130, in some examples, does not know the time that the mediaceases streaming at the user device 101 a-101 c (e.g., however, the endtime can be predicted by the predictor 130), the media is illustrated toend presentation at time 410. Though streaming has ceased, reading outof the buffer at the user device 101 a-101 c continues for some timethereafter.

FIG. 5A illustrates an example graph 402 of FIG. 4 on a timeline with anexample prediction model curve 502 generated by an example predictor 130based upon the prediction model parameters generated from the meteringdataset 402. At the time 408 that the example metering dataset 402 fallsbelow the example threshold 404, the example bandwidth recorder 304notifies the example parameter generator 310 that the metering dataset402 is complete. In the illustrated example of FIG. 5 , the exampleparameter generator 310 calculates a mean 508, an amplitude 514, and astandard deviation 516 of the metering dataset 402. Additionally, theparameter generator 310 determines the decay factor associated with theidentified media type (e.g., flash video). The example parametergenerator 310 makes the prediction model parameters (the mean, theamplitude, the standard deviation, and the decay factor) available tothe example modeler 312. The example modeler 312 then generates theprediction model curve 502 using the model based on the prediction modelparameters generated by the example parameter generator 310. In theillustrated example, the prediction model 502 is generated using anexponentially modified Gaussian (EMG) distribution function.Alternatively, other suitable prediction models may be used as describedin further detail below. The example modeler 312 sends the predictionmodel to the example bandwidth recorder 304 and the example forecaster314.

The example forecaster 314 then iterates time values in the exampleprediction model 502 until a time dependent solution (or value) 512 ofthe example prediction model 502 is at or under the threshold 404. Thethreshold 404 is used in the illustrated example to determine the end ofthe stream time due to the characteristics of the prediction modelutilized (the exponentially modified Gaussian (EMG)). The EMG functiondoes not go to zero until it reaches infinity, thus a threshold may beutilized to indicate a bandwidth rate below which it is determined thatstreaming has substantially stopped. In some examples, a secondthreshold may be utilized that lies substantially closer to zero thanthe threshold 404 used to create the metering dataset. Regardless, thetemporal location of the value 512 which is determined to be at or belowthe threshold is reported as the predicted end of streaming time. Thisapproach has been empirically found to predict end of stream times thatare substantially close to the actual end of stream time 410 observed atthe one of the user devices 101 a-101 c. The end of stream timerepresents the time at which the entire media stream has been played outof the buffer.

FIG. 5B is an example graph illustrating observed bandwidth of streamingmedia and associated prediction model curves. The illustrated example ofFIG. 5B includes the example metering dataset 402 and the exampleprediction model curve 502 of FIG. 5A. However, in the example of FIG.5B, after the bandwidth rate drops below the threshold 404, the mediacontinues streaming, and the bandwidth recorder 304 determines that thebandwidth rate is at or exceeding the threshold 404 at a second time520. In response to the bandwidth rate exceeding the threshold 404 attime 520, the example bandwidth recorder 304 creates a second meteringdataset 524. While recording the second metering dataset 524, theexample bandwidth recorder 304 compares the recorded bandwidth rate tothe previously generated prediction model curve 502. The examplebandwidth recorder 304 determines that, at time 526, the second meteringdataset 524 has met or exceeded the previous prediction model curve 502.If the bandwidth rate (e.g., the bandwidth rate of the second meteringdataset 524) is greater than that of the previous prediction model(e.g., the prediction model curve 502) at the time of comparison, a newprediction model is generated. The example bandwidth recorder 304notifies the example forecaster 314 to disregard the example predictionmodel curve 502. The example parameter generator 310 generates newprediction model parameters when the second metering dataset is observedto be at or below the threshold 404 at a second time (e.g., time 527).The example modeler 312 generates the second prediction model 528, andthe example forecaster 314 determines a new predicted end of stream time530, which is substantially close to the example end of stream time 560observed at the corresponding user device 101 a-101 c. The examplebandwidth recorder 304 continues to monitor the bandwidth rates as theyrise a third time 570. However, no action is taken in this instancebecause the third spike of bandwidth rates 570 does not meet or exceedthe threshold 404. By continuing to monitor bandwidth rates and comparethem with generated prediction models to trigger regeneration of theprediction model, a more accurate end of stream time can be predicted.

A flowchart representative of example machine readable instructions forimplementing the predictor 130 of FIG. 3 is shown in FIG. 6 . In thisexample, the machine readable instructions comprise a program forexecution by a processor such as the processor 912 shown in the exampleprocessor platform 900 discussed below in connection with FIG. 6 . Theprogram may be embodied in software stored on a tangible computerreadable storage medium such as a CD-ROM, a floppy disk, a hard drive, adigital versatile disk (DVD), a Blu-ray disk, or a memory associatedwith the processor 912, but the entire program and/or parts thereofcould alternatively be executed by a device other than the processor 912and/or embodied in firmware or dedicated hardware. Further, although theexample program is described with reference to the flowchart illustratedin FIG. 6 , many other methods of implementing the example predictor 130may alternatively be used. For example, the order of execution of theblocks may be changed, and/or some of the blocks described may bechanged, eliminated, or combined.

As mentioned above, the example processes of FIGS. 6, 7, and 8 may beimplemented using coded instructions (e.g., computer and/or machinereadable instructions) stored on a tangible computer readable storagemedium such as a hard disk drive, a flash memory, a read-only memory(ROM), a compact disk (CD), a digital versatile disk (DVD), a cache, arandom-access memory (RAM) and/or any other storage device or storagedisk in which information is stored for any duration (e.g., for extendedtime periods, permanently, for brief instances, for temporarilybuffering, and/or for caching of the information). As used herein, theterm tangible computer readable storage medium is expressly defined toinclude any type of computer readable storage device and/or storage diskand to exclude propagating signals. As used herein, “tangible computerreadable storage medium” and “tangible machine readable storage medium”are used interchangeably. Additionally or alternatively, the exampleprocesses of FIGS. 6, 7, and 8 may be implemented using codedinstructions (e.g., computer and/or machine readable instructions)stored on a non-transitory computer and/or machine readable medium suchas a hard disk drive, a flash memory, a read-only memory, a compactdisk, a digital versatile disk, a cache, a random-access memory and/orany other storage device or storage disk in which information is storedfor any duration (e.g., for extended time periods, permanently, forbrief instances, for temporarily buffering, and/or for caching of theinformation). As used herein, the term non-transitory computer readablemedium is expressly defined to include any type of computer readabledevice or disc and to exclude propagating signals. As used herein, whenthe phrase “at least” is used as the transition term in a preamble of aclaim, it is open-ended in the same manner as the term “comprising” isopen ended.

FIG. 6 is a flowchart representative of example machine readableinstructions that may be executed to implement the example predictor130. The example program 600 may be initiated, for example, when theexample user device 101 a begins to stream media from the examplestreaming media distributor 120 in a streaming media application.

Initially, at block 601, the example identifier 306 identifies theformat of streaming media associated with information received from theexample proxy server 105 by the example bandwidth recorder 304 andforwards the identified format to the example threshold generator 308.For example, when the information about streaming media arrives at theexample bandwidth recorder 304 of the audience measurement entity 125, amedia format is determined from the information (e.g., audio onlyformats, video only formats, or container formats containing both audioand video). Additionally or alternatively, the media format may beidentified in the information (e.g., the proxy server 105 may determineand report the format). The example threshold generator 308cross-references the determined media format is cross-referenced tothresholds for known media formats to establish a bandwidth ratethreshold (e.g., threshold 404 of FIGS. 4, 5A, and 5B) fordistinguishing media from ancillary information embedded in thestreaming media (block 602). The example threshold generator 308 setsthe threshold for media distinction based on the determined mediaformat. This threshold represents a base value for the bandwidth rate,and serves to provide a more accurate prediction time than instanceswhere no threshold is used (e.g., bandwidth below this threshold isassumed to be so insignificant that monitoring should not occur untilthe threshold is met). For example, without a threshold value,prediction models may be created for bandwidth rates of text overlaysembedded in a stream which, in some instances, may lead to inconsistentend of stream predictions.

At block 603, the example bandwidth recorder 304 monitors the bandwidthrate forwarded from the example proxy server 105. In some examples, thebandwidth rate may fluctuate erratically while streaming media. Toobserve smoother bandwidth values, the example bandwidth recorder 304utilizes a monitoring period to obtain a time-averaged bandwidth rate.For example, at the example bandwidth recorder 304, the bandwidth valueis monitored every tenth of a second for a two second period. The valuerecorded as the bandwidth value by the example bandwidth recorder 304 isan average of the twenty observed bandwidth usage rate values over thetwo second period. In other examples, the value recorded by the examplebandwidth recorder 304 may be an instant bandwidth usage rate value, ormay be averaged over any interval.

At block 604, the example bandwidth recorder 304 determines if the mediasession is currently active between the user device 101 a-101 c and thestreaming media distributor 120. For example, the bandwidth recorder 304of the illustrated example determines if the proxy server 105 reportsthat a streaming media session is still open. In the event that theexample bandwidth recorder 304 determines that the streaming mediasession is no longer active, the example program 600 terminates.However, in the event that media session is still open, control proceedsto block 605.

At block 605, the example bandwidth recorder 304 compares the bandwidthrate to the threshold to determine if the prediction model should begenerated. If the bandwidth rate is below the threshold, control returnsto block 603 to await the bandwidth rate exceeding the threshold. If theexample bandwidth recorder 304 determines that the measured bandwidthrate value exceeds the threshold the example bandwidth recorder 304utilizes the bandwidth rate exceeding the threshold and the time atwhich the bandwidth rate exceeded the threshold as the initial valuesrecorded in a metering dataset (block 606). The example bandwidthrecorder 304 records the subsequent bandwidth rates and associatedtimestamps in the metering dataset and moves to block 618.

At block 618, the bandwidth rate is below the threshold. When thebandwidth value 400 is determined to be above the threshold, controlremains at block 618 while the example bandwidth recorder 304 monitorsfor a bandwidth value that is at or below the threshold.

When the bandwidth value is determined to be below the threshold (block618), the metering dataset is determined to be complete. The exampleparameter generator 310 determines prediction model parameters from themetering dataset (block 620), the prediction model parameters are to beused in generating a prediction model. For example, parameters such as amean value, a scale (i.e. amplitude), a standard deviation, and avariance may be calculated by the example parameter generator 310. Anexample flowchart illustrating example machine readable instructionsthat may be executed to implement block 620 (e.g., the instructions forimplementing the parameter generator 310) are depicted in FIG. 7 . Whenthe prediction model parameters are calculated, the example parametergenerator 310 notifies the example modeler 312 that parameters areavailable for generation of a prediction model 502. Control proceeds toblock 625.

At block 625, the example modeler 312 generates the prediction modelusing the prediction model parameters calculated from the meteringdataset. The prediction model(s) may be generated by the example modeler312 using distribution functions. For example, the predictions may bemodeled using an exponentially modified Gaussian distribution.

$\begin{matrix}{{f\left( {{t;\mu},\sigma,\lambda} \right)} = {\frac{\lambda}{2}e^{\frac{\lambda}{2}{({{2\mu} + {\lambda\sigma^{2}} - {2t}})}}{{erfc}\left( \frac{\mu - {\lambda\sigma^{2}} - t}{\sqrt{2}\sigma} \right)}}} & {{Equation}1}\end{matrix}$In Equation 1, mu (μ) represents the mean of the metering dataset, sigmasquared (σ²) represents the variance of the metering dataset, and lambda(λ) represents a rate of the exponential (e.g., a decay factor). Mu (μ)and sigma squared (σ²) are based on the metering dataset and lambda maybe customized or adjusted based on the type of media being streamed.

Other suitable distributions may include a chi-squared distribution, anexponential distribution, a gamma distribution, a Laplace distribution,a Pareto distribution, a Weibull distribution, a log-normaldistribution, or any other suitable probabilistic distribution capableof being modeled with a right-handed decay. In some other examples, apiecewise function comprised of a plurality of functions, definingbehavior over an interval may be used to generate a suitable predictionmodel. In other words, an example prediction model will have one maximumon the interval, (−∞<t<∞), and will conform to one of the followingproperties:

$\begin{matrix}{{\lim\limits_{t\rightarrow\infty}{f(t)}} = 0} & (1)\end{matrix}$ $\begin{matrix}{{\lim\limits_{t\rightarrow\infty}{f(t)}} = {- \infty}} & (2)\end{matrix}$

If the prediction model conforms to one of the limits set forth above,the prediction model will decay after the maximum and approach zero (ornegative infinity) as time approaches infinity.

An example flowchart representative of machine readable instructionsthat may be utilized to implement block 625 is illustrated in FIG. 8 .

When the prediction model is generated, the example forecaster 314iterates over the prediction model to determine a time at which a valueof the prediction model falls below the threshold and returns the timeas the predicted end of stream time for the streaming media (block 627).Once identified, the example forecaster 314 forwards the time to theexample end of stream handler 316 for reporting (block 629). The timereturned by the example end of stream handler 316 may be a timestamp ofthe predicted end time and/or an amount of time remaining for thestreaming media presentation. Upon the reporting of the predicted end ofstream time, control returns to block 602 where the example bandwidthrecorder 304 continues monitoring bandwidth rates.

FIG. 7 is a flowchart 700 representing example machine readableinstructions that may be executed to implement block 620 of FIG. 6 tocalculate prediction model parameters. At block 708, the exampleparameter generator 310 determines parameters using the values of theprimary dataset to generate a distribution model. For example, theexample parameter generator 310 may calculate the mean, the standarddeviation, the amplitude, and the variance of the metering dataset.

Next, the example parameter generator 310 identifies a decay factorassociated with the characteristics of the streaming media (e.g., type,bit-rate, codec, carrier stream, etc.) for use in generating the exampleprediction model (block 710). For the example exponentially modifiedGaussian function, this decay factor will be lambda of Equation 1, whichdetermines the rate of decay. In some examples, the value used forlambda is identified based on the type of media being streamed (e.g.,video and/or audio). In other examples, the value of lambda is dependentof the codec of media being streamed. For example, the example parametergenerator 310 may cross reference the codec to a table having associateddecay values (e.g., a flash video or “.flv” file). In other examples,the value of lambda is pre-configured before use of the examplepredictor 130.

At block 712, the generated parameters from block 708 and the identifieddecay factor from block 710 are stored for use by the example modeler312 in the generation of the prediction model.

FIG. 8 is a flowchart 800 representing example machine readableinstructions that may be executed to implement blocks 625 and 627 ofFIG. 6 to predict an end of stream time. Beginning at block 802, theexample modeler 312 obtains the parameters and decay factor from theexample parameter generator 310. At block 804, the example modeler 312uses the parameter and decay factor values to generate a predictionmodel. For example, the mean, the standard deviation, the amplitude, anddecay factor calculated from the metering dataset are utilized inconjunction with Equation 1. Additionally, the time associated with eachvalue in the metering dataset is inserted as the values for x in theexample Equation 1, for example. Thus, utilizing the function of exampleEquation 1, the prediction model is generated based on the exampleexponentially modified Gaussian distribution.

At block 808, the example forecaster 314 of the illustrated example ofFIG. 3 iterates over the prediction model generated in block 804 todetermine a time at which a value of the prediction model falls belowthe threshold. The iterative process may iterate over the predictionmodel in predetermined increments, or, in some examples, adjustableincrements. For example, the iterations may be for a number ofmilliseconds. The example forecaster 314 begins the iteration using theidentified mean value of the prediction model obtained from thegenerated parameters from block 708 of FIG. 7 . As the prediction modelbegins to decay after the presence of a local peak, beginning theforecasting process at the mean value (e.g., the temporal location ofthe peak) allows for faster processing by not calculating the predictionvalues occurring before the peak.

Block 810 and block 812 of the illustrated example illustrate aniterative checking performed by the example forecaster 314. For example,if the value observed at block 810 is not below the threshold, theexample forecaster 314 observes the next increment value (block 812) andreturns to block 810. When the value observed at block 810 is at orbelow the threshold, the example forecaster 314 moves to block 814.

At block 814, the example forecaster 314 obtains the time valueassociated with the observed value that is at or below the threshold. Insome examples, the example forecaster 314 stores this time value as thepredicted end of stream time to predict an end of stream time for thestreaming media based on the metering dataset. In some example, theforecaster 314 may additionally or alternatively calculate a predictedduration for the streaming media by subtracting the end of stream timefrom a media start time identified in information received by theexample bandwidth recorder 304.

FIG. 9 is a block diagram of an example processor platform 900 capableof executing the instructions of FIGS. 6, 7, and 8 to implement thepredictor 130 of FIG. 3 . The processor platform 900 can be, forexample, a server, a personal computer, a mobile device (e.g., a cellphone, a smart phone, a tablet such as an iPad™), an Internet appliance,a digital video recorder, a smart TV, a smart Blu-ray player, a gamingconsole, a personal video recorder, a set top box, or any other type ofcomputing device capable of streaming media.

The processor platform 900 of the illustrated example includes aprocessor 912. The processor 912 of the illustrated example is hardware.For example, the processor 912 can be implemented by one or moreintegrated circuits, logic circuits, microprocessors or controllers fromany desired family or manufacturer.

The processor 912 of the illustrated example includes a local memory 913(e.g., a cache). The processor 912 of the illustrated example is incommunication with a main memory including a volatile memory 914 and anon-volatile memory 916 via a bus 918. The volatile memory 914 may beimplemented by Synchronous Dynamic Random Access Memory (SDRAM), DynamicRandom Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM)and/or any other type of random access memory device. The non-volatilememory 916 may be implemented by flash memory and/or any other desiredtype of memory device. Access to the main memory 914, 916 is controlledby a memory controller.

The processor platform 900 of the illustrated example also includes aninterface circuit 920. The interface circuit 920 may be implemented byany type of interface standard, such as an Ethernet interface, auniversal serial bus (USB), and/or a PCI express interface.

In the illustrated example, one or more input devices 922 are connectedto the interface circuit 920. The input device(s) 922 permit a user toenter data and commands into the processor 912. The input device(s) canbe implemented by, for example, an audio sensor, a microphone, a camera(still or video), a keyboard, a button, a mouse, a touchscreen, atrack-pad, a trackball, isopoint and/or a voice recognition system.

One or more output devices 924 are also connected to the interfacecircuit 920 of the illustrated example. The output devices 924 can beimplemented, for example, by display devices (e.g., a light emittingdiode (LED), an organic light emitting diode (OLED), a liquid crystaldisplay, a cathode ray tube display (CRT), a touchscreen, a tactileoutput device, a light emitting diode (LED), and/or speakers). Theinterface circuit 920 of the illustrated example, thus, typicallyincludes a graphics driver card.

The interface circuit 920 of the illustrated example also includes acommunication device such as a transmitter, a receiver, a transceiver, amodem and/or network interface card to facilitate exchange of data withexternal machines (e.g., computing devices of any kind) via a network926 (e.g., an Ethernet connection, a digital subscriber line (DSL), atelephone line, coaxial cable, a cellular telephone system, etc.).

The processor platform 900 of the illustrated example also includes oneor more mass storage devices 928 for storing software and/or data.Examples of such mass storage devices 928 include floppy disk drives,hard drive disks, compact disk drives, Blu-ray disk drives, RAIDsystems, and digital versatile disk (DVD) drives.

The coded instructions 932 of FIGS. 6, 7, and 8 may be stored in themass storage device 928, in the volatile memory 914, in the non-volatilememory 916, and/or on a removable tangible computer readable storagemedium such as a CD or DVD.

From the foregoing, it will be appreciated that the above disclosedexamples facilitate predicting an end time of streaming media using aprediction model. Additionally, the disclosed examples provide for theability to forecast an end of stream time derived from the behavior ofthe traffic of the streaming media without having access to thestreaming media application on the user device 101 a-101 c. In this way,it may be beneficial to audience measurement entities and/or datacollection facilities to accurately predict the end of streaming mediafor targeted media delivery, more precise advertisement extraction ofadvertisement embedded in streaming media, presentation of user surveys,etc.

The disclosed examples also facilitate conservation of bandwidth in amonitored household. The disclosed examples may be used to send targetedmedia and/or surveys at a proper time so as not to interrupt streamingmedia. In a household with limited bandwidth, by predicting the end ofstreaming media, an audience measurement entity would not consume excessbandwidth by persistent querying to determine when to send targetedmedia and/or surveys.

The disclosed examples further facilitate conservation of systembandwidth. In examples where the proxy server sends characteristicinformation about the streaming media in lieu of mirroring the streamingmedia, required bandwidth is greatly reduced in contrast to mirroringmethods. Such mirroring methods require the entirety of the streamingmedia to be mirrored to the audience measurement entity requiringbandwidth equal to that of the streaming media. Using the disclosedexamples, the required bandwidth from the proxy server to the audiencemeasurement entity is greatly reduced.

Although certain example methods, apparatus and articles of manufacturehave been described herein, the scope of coverage of this patent is notlimited thereto. On the contrary, this patent covers all methods,apparatus and articles of manufacture fairly falling within the scope ofthe claims of this patent.

What is claimed is:
 1. An apparatus comprising: at least one memory;instructions in the apparatus; and processor circuitry to execute theinstructions to: generate a prediction model using a mean value of abandwidth of a transmission of a streaming media to a user device and anamplitude of the streaming media; and identify an end of a streamingmedia session when an output of the prediction model satisfies athreshold.
 2. The apparatus as defined in claim 1, wherein the processorcircuitry is to: determine a type of the streaming media presented onthe user device; and set a bandwidth threshold based on the type of thestreaming media.
 3. The apparatus as defined in claim 2, wherein thetype of the streaming media is at least one of video and audio.
 4. Theapparatus as defined in claim 2, wherein the processor circuitry is todetermine a decay factor for the prediction model based on the type ofthe streaming media.
 5. The apparatus as defined in claim 4, wherein theprocessor circuitry is to calculate prediction model parameters by:determining the mean value of the streaming media; and determining theamplitude of the streaming media.
 6. The apparatus as defined in claim1, wherein the streaming media includes a bandwidth rate and a timestampassociated with the bandwidth rate.
 7. The apparatus as defined in claim6, wherein the bandwidth rate is determined based on informationreceived from a proxy, and wherein the proxy is intermediate to the userdevice and a streaming media distributor transmitting the streamingmedia to the user device.
 8. An apparatus comprising: at least onememory; instructions in the apparatus; and processor circuitry toexecute the instructions to: determine a flow of media data associatedwith streaming media to a user device; generate a prediction model usinga mean value of the flow of the media data, an amplitude of the flow ofthe media data, and a standard deviation of the flow of the media data;and identify an end of a streaming media session when an output of theprediction model satisfies a threshold.
 9. The apparatus as defined inclaim 8, wherein the processor circuitry is to: determine a type of thestreaming media presented on the user device; and set a bandwidththreshold based on the type of the streaming media.
 10. The apparatus asdefined in claim 9, wherein the type of the streaming media is at leastone of video and audio.
 11. The apparatus as defined in claim 9, furtherincluding processor circuitry is to determine a decay factor for theprediction model based on the type of the streaming media.
 12. Theapparatus as defined in claim 11, wherein the processor circuitry is tocalculate prediction model parameters by: determining the mean value ofthe flow of the media data; determining the amplitude of the flow of themedia data; and determining the standard deviation of the flow of themedia data.
 13. The apparatus as defined in claim 8, wherein the flow ofthe media data includes a bandwidth rate and a timestamp associated withthe bandwidth rate.
 14. The apparatus as defined in claim 13, whereinthe bandwidth rate is determined based on information received from aproxy, and wherein the proxy is intermediate to the user device and astreaming media distributor transmitting the streaming media to the userdevice.
 15. An apparatus comprising: at least one memory; instructionsin the apparatus; and processor circuitry to execute the instructionsto: determine a bandwidth rate associated with presentation of streamingmedia based on monitored traffic between a user device and a streamingmedia distributor; generate a prediction model based on characteristicsof the bandwidth rate, the characteristics of the bandwidth rateincluding an amplitude of the bandwidth rate, a mean value of thebandwidth rate, and a standard deviation of the bandwidth rate; anddetermine that a time when an output of the prediction model is below aminimum bandwidth threshold is a session end time for a streaming mediasession, the session end time corresponding to when the user devicestops receiving the streaming media.
 16. The apparatus of claim 15,wherein the processor circuitry is to: determine a type of the streamingmedia presented on the user device; and set a bandwidth threshold basedon the type of the streaming media.
 17. The apparatus of claim 16,wherein the processor circuitry is to determine a decay factor for theprediction model based on the type of the streaming media.
 18. Theapparatus of claim 17, wherein the processor circuitry is to calculateprediction model parameters by: determining the mean value of thebandwidth rate; determining the amplitude of the bandwidth rate; anddetermining the standard deviation of the bandwidth rate.
 19. Theapparatus of claim 15, wherein the bandwidth rate further includes atimestamp associated with the bandwidth rate.
 20. The apparatus of claim15, wherein the bandwidth rate is not received from a proxy that isintermediate to a streaming media application presenting the streamingmedia and is not received from a streaming media distributortransmitting the streaming media to the streaming media application.